package com.sys.object.common.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;


/**
 * 功能：根据路径创建文件夹 
 */
public class CreateFile {
	/**
	 * 功能：根据路径创建文件夹 
	 */
	public static boolean createDir(String destDirName) {
	    File dir = new File(destDirName);
	    if(dir.exists()) {
	     return false;
	    }
	    if(!destDirName.endsWith(File.separator))
	     destDirName = destDirName + File.separator;
	    // 创建单个目录
	    if(dir.mkdirs()) {
	     return true;
	    } else {
	     return false;
	    }
	}
	
	/**
	 * 功能：根据路径创建文件 
	 */
	public static boolean CreateFile(String destFileName) {
	    File file = new File(destFileName);
	    if (file.exists()) {
	     return false;
	    }
	    if (destFileName.endsWith(File.separator)) {
	     System.out.println("创建单个文件" + destFileName + "失败，目标不能是目录！");
	     return false;
	    }
	    if (!file.getParentFile().exists()) {
	     System.out.println("目标文件所在路径不存在，准备创建。。。");
	     if (!file.getParentFile().mkdirs()) {
	      System.out.println("创建目录文件所在的目录失败！");
	      return false;
	     }
	    }
	    // 创建目标文件
	    try {
	     if (file.createNewFile()) {
	      return true;
	     } else {
	      System.out.println("创建单个文件" + destFileName + "失败！");
	      return false;
	     }
	    } catch (IOException e) {
	     e.printStackTrace();
	     System.out.println("创建单个文件" + destFileName + "失败！");
	     return false;
	    }
	}
	
	/**
	 * 功能：根据路径创建临时文件 
	 */
	public static String createTempFile(String prefix, String suffix, String dirName) {
	    File tempFile = null;
	    try{
	    if(dirName == null) {
	     // 在默认文件夹下创建临时文件
	     tempFile = File.createTempFile(prefix, suffix);
	     return tempFile.getCanonicalPath();
	    }
	    else {
	     File dir = new File(dirName);
	     // 如果临时文件所在目录不存在，首先创建
	     if(!dir.exists()) {
	      if(!CreateFile.createDir(dirName)){
	       System.out.println("创建临时文件失败，不能创建临时文件所在目录！");
	       return null;
	      }
	     }
	     tempFile = File.createTempFile(prefix, suffix, dir);
	     return tempFile.getCanonicalPath();
	    }
	    } catch(IOException e) {
	     e.printStackTrace();
	     System.out.println("创建临时文件失败" + e.getMessage());
	     return null;
	    }
	}
	
	/** 
     * 复制单个文件 
     * @param oldPath String 原文件路径 如：c:/fqf.txt 
     * @param newPath String 复制后路径 如：f:/fqf.txt 
     * @return boolean 
     */ 
   public static void copyFile(String oldPath, String newPath,boolean isDelete) { 
       try { 
           int bytesum = 0; 
           int byteread = 0; 
           File oldfile = new File(oldPath); 
           if (oldfile.exists()) { //文件存在时 
               InputStream inStream = new FileInputStream(oldPath); //读入原文件 
               FileOutputStream fs = new FileOutputStream(newPath); 
               byte[] buffer = new byte[1444]; 
               int length; 
               while ( (byteread = inStream.read(buffer)) != -1) { 
                   bytesum += byteread; //字节数 文件大小 
                   fs.write(buffer, 0, byteread); 
               } 
               inStream.close(); 
               if (isDelete) {
            	   oldfile.delete();
			}
           } 
       } 
       catch (Exception e) { 
           System.out.println("复制单个文件操作出错"); 

       } 

   } 
   
   /**
	 * 检测目录是否存在，如果不存在，则创建
	 * 
	 * @param picPath
	 *            String
	 * @return boolean
	 */
	public static boolean createPath(String sPath) {
		String msg = "";
		try {
			File dir = new java.io.File(sPath);
			if (dir == null) {
				msg = "错误原因:＜BR＞对不起，不能创建空目录！";
				return false;
			}
			if (dir.isFile()) {
				msg = "错误原因:＜BR＞已有同名文件＜B＞" + dir.getAbsolutePath() + "＜/B＞存在。";
				return false;
			}
			if (!dir.exists()) {
				boolean result = dir.mkdirs();
				if (result == false) {
					msg = "错误原因:＜BR＞目录＜b＞" + dir.getAbsolutePath()
							+ "＜/B＞创建失败，原因不明！";
					return false;
				}
				return true;
			} else {
				return true;
			}
		} catch (Exception e) {
			return (false);
		}
	}
}
